package com.qf.java2106.huangshengrui.hotel.factory;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

/**
 * @author q
 * @version V1.0
 * @date 2021/10/25
 **/
public class BeanFactory {

    private static Map<String,Object> ioc = new HashMap<>();
    //创建一个有序的Properties对象
    private static final Properties PROPERTIES = new OrderedProperties()    ;

    static {
        try {
            PROPERTIES.load(BeanFactory.class.getClassLoader().getResourceAsStream("bean.properties"));
            // 读取出来配置文件中的key是没有顺序的。
            // 所以要让读取的顺序是按从上到下的顺序，也就是先创建Dao，再创建Service
            Set<String> beanNames = PROPERTIES.stringPropertyNames();
            for (String beanName : beanNames) {
                String className = PROPERTIES.getProperty(beanName);
                Class<?> clazz = Class.forName(className);
                if (null!=clazz){
                    Object bean = clazz.newInstance();
                    ioc.put(beanName,bean);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 从map中根据key获取value，value就是对象。
     *  dao,service都是单例的，可以节省性能
     * @param beanName
     * @return
     */
    public static Object getBean(String beanName){
        return ioc.get(beanName);
    }


}
